<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>promise微任务处理逻辑</title>
</head>
<body>
    
</body>
<script>
    /*
        微任务的一个典型代表就是promise  但是promise并不是全部都是微任务
            promise的构造函数部分是属于主线程任务的
    */
    setTimeout(()=>{
        console.log('setTimeout')
        new Promise((resolve,reject)=>{  //这里虽然是主线程任务 到那时因为它是嵌套再红任务上  所以必须是红任务执行的时候才会执行
            console.log('reject')
            reject('oh no')
        }).catch(err=>{
            console.log(err)
        })
    },0)
    new Promise(resolve=>{  //promise的构造函数部分是属于主线程任务的
        console.log('resolve')
        resolve('hhh')
    }).then(res=>{
        console.log(res)
    })
    console.log('主线程')
    /*
        以上的一串代码 看似嵌套结构是非常的复杂 但是其实是很简单的
            我们再判断这种问题的时候  只要记住 执行顺序永远是按照 主线程 微任务 宏任务

        以上的执行接轨哦分别是  resolve 主线程 hhh setTimeout reject oh no
    */
</script>
</html>